﻿using Root.Models.DAL;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Root.Controllers
{
    public class UploadController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public void DoUpload()
        {
            //System.Web.HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
            System.Text.StringBuilder strMsg = new System.Text.StringBuilder("<div>\r\n");
            try
            {
                HttpPostedFileBase postedFile = Request.Files["Filedata"];
                string FileType = postedFile.ContentType.ToString();
                string fileName, fileExtension;
                fileName = System.IO.Path.GetFileName(postedFile.FileName);
                fileExtension = System.IO.Path.GetExtension(fileName);
                string rnd = RandomFileName();
                if (
                    !(fileExtension.ToLower() == ".asp") &&
                    !(fileExtension.ToLower() == ".aspx") &&
                    !(fileExtension.ToLower() == ".php") &&
                    !(fileExtension.ToLower() == ".vbs") &&
                    !(fileExtension.ToLower() == ".py") &&
                    !(fileExtension.ToLower() == ".com") &&
                    !(fileExtension.ToLower() == ".cmd") &&
                    !(fileExtension.ToLower() == ".exe") &&
                    !(fileExtension.ToLower() == ".bat") &&
                    !(fileExtension.ToLower() == "")
                #region back
                    //) && (
                    //(postedFile.ContentType.Contains("text/*")) ||
                    //(postedFile.ContentType.Contains("image/*")) ||
                    //(postedFile.ContentType.Contains("application/*")) ||
                    //(postedFile.ContentType.Contains("video/*")) ||
                    //(postedFile.ContentType.Contains("audio/*")) ||
                    //(postedFile.ContentType.Contains("message/*"))
                    //) 
                #endregion
                    )
                {
                    if (postedFile.ContentLength >= 1024 * 1024 * 20)
                    {
                        strMsg.Append("<p><span>文件上传</span> <span style=\"color:red\">错误</span><br />\r\n");
                        strMsg.Append("上传的文件类型：" + postedFile.ContentType.ToString() + "<br />\r\n");
                        strMsg.Append("客户端文件地址：" + postedFile.FileName + "<br />\r\n");
                        strMsg.Append("上传文件的文件名：" + rnd + fileName + "<br />\r\n");
                        strMsg.Append("上传文件的大小为：" + postedFile.ContentLength / 1024.0 + "KB<br />\r\n");
                        strMsg.Append("上传文件的扩展名：" + fileExtension + "<br />\r\n");
                        strMsg.Append("文件大小超过限制：20MB，请分卷压缩后再上传</p><br /></div>");
                    }

                    strMsg.Append("<p><span>文件上传</span> <span style=\"color:green\">成功</span><br />\r\n");
                    strMsg.Append("上传的文件类型：" + postedFile.ContentType.ToString() + "<br />\r\n");
                    strMsg.Append("客户端文件地址：" + postedFile.FileName + "<br />\r\n");
                    strMsg.Append("上传文件的文件名：" + rnd + fileName + "<br />\r\n");
                    strMsg.Append("上传文件的大小为：" + postedFile.ContentLength / 1024.0 + "KB<br />\r\n");
                    strMsg.Append("上传文件的扩展名：" + fileExtension + "<br />\r\n");
                    strMsg.Append("文件保存位置：<a href='/Files/Upload/" + rnd + fileName + "'>" + rnd + fileName + "</a><br /></p></div>\r\n");
                    postedFile.SaveAs(Server.MapPath("/Files/upload/") + rnd + fileName);
                }
                else
                {
                    strMsg.Append("<p><span>文件上传</span> <span style=\"color:red\">错误</span><br />\r\n");
                    strMsg.Append("上传的文件类型：" + postedFile.ContentType.ToString() + "<br />\r\n");
                    strMsg.Append("客户端文件地址：" + postedFile.FileName + "<br />\r\n");
                    strMsg.Append("上传文件的文件名：" + rnd + fileName + "<br />\r\n");
                    strMsg.Append("上传文件的大小为：" + postedFile.ContentLength / 1024.0 + "KB<br />\r\n");
                    strMsg.Append("上传文件的扩展名：" + fileExtension + "<br />\r\n");
                    strMsg.Append("上传的文件类型有危险或没有扩展名</p><br /></div>");
                }

            }
            catch (System.Exception ex)
            {
                strMsg.AppendLine(ex.ToString());
                throw ex;
            }
            Response.Write(strMsg.ToString());
        }

        private string RandomFileName()
        {
            return System.Guid.NewGuid().ToString("D").ToUpper() + ".";
        }
    }
}